一:JDBC及其使用原理
jdbc(Java DataBase Connectivity)顾名思义就是Java数据库连接,通过使用Java语言来操作数据库的工具。
我们知道,我们在console控制台操作数据库时使用的是SQL语句,其实同理JDBC就是通过java语言来向数据库发送SQL语句。
原理分析:
厂商每个来提供遵循我们这种语法或者说的英文规范的驱动(驱动程序)驱动是一种API。
API:应用程序编程接口,及应用程序编程的接口,一些预先定义的函数,无需访问到源码,直接调用。
所以,我们直接调用驱动程序来与我们的数据库连接。
JDBC是接口,而JDBC驱动才是真正的接口的实现,没有驱动就无法完成数据库的连接。
二:JDBC核心的接口,以及代码步骤
代码步骤:(注意导入mysql数据库的驱动jar包)
1.注册驱动:的Class.forName( “com.mysql.jdbc.driver”);
使用JDBC时注册驱动时,不使用DriverManager.registerDriver(new com.mysql.jdbc.Driver());因为java.sql.Driver这个接口码虽然可以注册驱动,但是出现硬编码,而且其实注册了两次,com.mysql.jdbc.Driver中其实静态板块会创建本类的对象。
public class Driver extends NonRegisteringDriver implements java.sql.Driver {
静态 {
尝试 {
java.lang.DriverManager中registerDriver(new Driver());
} catch(SQLException E){
抛出 新的 RuntimeException(“无法注册驱动程序!”);
}
}
……
}
2.获取连接器(连接),如果可以获得,则表示已经连接上。
通过DriverManger的的getConnection方法来获取
Connection conn = DriverManger.getConnection(url,name,password);
url:标准资源的地址,也可以说是独有的网址。
它是用来找到要连接数据库“网址”,这里url =“jdbc:mysql:// 8080 / ”数据库名称“?useUnicode = true&characterEncoding = utf8”;
名与密码为数据库名和密码。
3.编写我们要执行的SQL语句
例如:String sql =“select * from tbl_user where uname =?and upassword =?”;
这里采用?占位符,是为了防止SQL攻击,加密了文档。
4.预处理创建对象来执行SQL语句。
对象采用PreparedStatement (PreparedStatement是Statement的子接口,你可以使用PreparedStatement来替换语句)。
//执行SQL语句PreparedStatement pstmt = conn.prepareStatement(sql);
5.设置占位符参数
pstmt.setString(1,username);
pstmt.setString(2,密码);
6.执行具体操作
(1)executeUpdate(sql)是执行更新操作,比如添加,更新(修改),删除的。
返回一个int类型的值用行接收,表示数据修改的次数,所以行> 0,则表示执行
否则没有执行。
executeQuery(sql)是执行查询的。返回一个结果集,我们用ResultSet rs对象来接收。则
ResultSet rs = pstmt.executeQuery();
rs.next()方法类似于IO流,调用rs对象的next()方法把“行光标”向下移动一行。用一个循环即可执行完所有数据的查询。
7.关闭
前面提到的IO流,其实JDBC类似于IO流。与IO流一样,使用后的东西都需要关闭!关闭的顺序是先得到的后关闭,后得到的先关闭。
及先关闭我们的ResultSet rs对象,然后是PreparedStatement pstmt对象,最后是连接连接器。
rs.close();
stmt.close();
con.close();